<?php
declare (strict_types = 1);
namespace app\validate;

use think\Validate;

class Config extends Validate
{
    /**
     * 定义验证规则
     */
    protected $rule = [
        'config_key'    => 'require|alpha',
        'site_title|网站标题'  => 'max:30',
        'site_email|站长邮箱'  => 'email',
        'file_ext|上传格式'    => 'checkExts',
        'file_size|上传大小'    => 'number',
        'alioss_accesskey_id|AliOSS KeyID'   => 'alphaNum',
        'alioss_accesskey_secret|AliOSS Secret'   => 'alphaNum',
        'oss_endpoint|AliOSS 域名'    => 'url',
    ];

    /**
     * 定义错误信息
     */
    protected $message = [
        'config_key.require'    => '配置表单缺少主要字段',
        'config_key.alpha'      => '配置表单参数非法',
    ];

    /**
     * 验证上传文件格式
     * @param $value
     */
    protected function checkExts($value)
    {
        // 验证上传格式字段的格式
        if(!preg_match("/^[^,][a-z0-9,]*[^,]$/i", $value)) {
            return "上传格式字段输入有误";
        }
        // 不允许添加的字段
        $array = ['php', 'html'];
        $ext_arr = explode(",", $value);
        foreach ($ext_arr as $ext) {
            if (in_array($ext, $array)) {
                return "不允许设置上传 ".$ext." 格式文件";
            }
        }
        return true;
    }
}
